package servlets;



import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.io.PrintWriter;


import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import business.Cliente;
import business.Compra;
import business.Funcionario;
import dao.ClienteDao;

public class ServletCliente extends HttpServlet implements Servlet 
	{
	private static final Logger log = Logger.getLogger( ClienteDao.class );
	
	ClienteDao clientedao = new ClienteDao();
	
	protected void doGet(HttpServletRequest request, 
			HttpServletResponse response) 
	throws ServletException, IOException 
	{
		doPost(request,response);
	}

	protected void doPost(HttpServletRequest request, 
			HttpServletResponse response) 
	throws ServletException, IOException
	{
		String comando = request.getParameter("comando");

		if (comando == null)
		{
			response.sendRedirect("clientes.jsp");
		}		
		else if ("inserir".equals(comando))
		{
			insereCliente(request);
			response.sendRedirect("clienteInserir.jsp?mensagem=cliente Inserido com Sucesso!");
		}
		else if ("remover".equals(comando))
		{
			String cpf = request.getParameter("cpf");
			log.debug(cpf);
			clientedao.removerCliente(cpf);

			response.sendRedirect("clienteConsulta.jsp?mensagem=cliente Removido com Sucesso!");			
		}
		else if ("consultar".equals(comando))
		{
			montaConsulta(request);

			RequestDispatcher rd = request.getRequestDispatcher("clienteConsultar.jsp");
			rd.forward(request,response);			
			
		}
		else if ("alterar".equals(comando))
		{
			montaConsulta(request);

			RequestDispatcher rd = request.getRequestDispatcher("clienteAlterar.jsp");
			rd.forward(request,response);			
			
		}
		else if ("Alterar".equals(comando))
		{
			
			String cpf = request.getParameter("cpf");
			log.debug(cpf);
			clientedao.removerCliente(cpf);
			
			insereCliente(request);
			
			RequestDispatcher rd = request.getRequestDispatcher("clienteAlterar.jsp");
			
			rd.forward(request,response);			
			
		}
		/*else if (comando.equals("listar"))
		{
			ArrayList alunos = alunodao.listarAlunos();
			
			request.setAttribute("lista_alunos",alunos);
			
			RequestDispatcher rd = request.getRequestDispatcher("alunoListar.jsp");
			rd.forward(request,response);			
		}*/			
		
			
			
			

	}

	private void insereCliente(HttpServletRequest request) {
		
		String id =request.getParameter("id");
		String nome = request.getParameter("nome");
		String cpf = request.getParameter("cpf");
		String tCel = request.getParameter("telCel");
		String endereco = request.getParameter("endereco");
		String tFixo = request.getParameter("telFixo");
		String tPessoa = request.getParameter("tPessoa");
		String rg = request.getParameter("rg");
		String dia = request.getParameter("dia");			
		String mes = request.getParameter("mes");
		String ano = request.getParameter("ano");

		Cliente c1 = new Cliente();

		log.debug("veio como parametro: "+request.getParameter("id"));
		c1.setCpf(cpf);
		log.debug(nome);
		c1.setNome(nome);
		
		log.debug("peguei o id" +id);
		try {
			c1.setIdPessoa(Integer.parseInt(id));
			log.debug("setei no servlet meu idPessoa " + c1.getIdPessoa());
		} catch (NumberFormatException e1) {
			log.error("Number Format Exception", e1);
			c1.setIdPessoa(0);
		}

		log.debug(tCel);
		try {
			c1.setTCel(Integer.parseInt(tCel));
		} catch (NumberFormatException e) {
			log.error("Number Format Exception", e);
			c1.setTCel(0);
		}
		log.debug(endereco);
		c1.setEndereco(endereco);
		log.debug(tFixo);
		try {
			c1.setTFixo(Integer.parseInt(tFixo));
		} catch (NumberFormatException e) {
			log.error("Number Format Exception", e);
			c1.setTFixo(Integer.parseInt(tFixo));
		}
		log.debug(tPessoa);
		c1.setTPessoa(tPessoa);

		c1.setDt_Nasc(ano+"-"+mes+"-"+dia);
		log.debug(rg);
		c1.setRg(rg);
		clientedao.adicionarCliente(c1);
	}

	private void montaConsulta(HttpServletRequest request) {
		String cpf = request.getParameter("cpf");
		
		ArrayList clientes = clientedao.listarClientes(cpf);
		
		request.setAttribute("lista_clientes",clientes);
		
		Cliente cli = (Cliente)clientes.get(0);
					
		log.debug(cpf);	
		request.setAttribute("id",cli.getIdPessoa());
		log.debug(cli.getIdPessoa());			
		request.setAttribute("nome",cli.getNome());
		log.debug(cli.getNome());			
		request.setAttribute("cpf",cli.getCpf());
		log.debug(cli.getCpf());
		request.setAttribute("telCel",cli.getTCel());
		log.debug(cli.getCpf());
		request.setAttribute("endereco",cli.getEndereco());
		log.debug(cli.getEndereco());
		request.setAttribute("telFixo",cli.getTFixo());
		log.debug(cli.getTFixo());
		request.setAttribute("tPessoa",cli.getTPessoa());
		log.debug(cli.getCpf());
		request.setAttribute("rg",cli.getRg());
		log.debug(cli.getRg());
		request.setAttribute("ano",cli.getDt_Nasc().subSequence(0, 4));
		log.debug("ano"+cli.getDt_Nasc().subSequence(0, 4));
		request.setAttribute("mes",cli.getDt_Nasc().subSequence(5, 7));
		log.debug("mes"+cli.getDt_Nasc().subSequence(5, 7));
		request.setAttribute("dia",cli.getDt_Nasc().subSequence(8, 10));			
		log.debug("dia"+cli.getDt_Nasc().subSequence(8, 10));
		log.debug("tudo"+cli.getDt_Nasc());
		
		log.debug("passei peelo SET"+clientes);
	}
}